package com.aliyun.messagemgt.application.service;

import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.aliyun.messagemgt.common.dto.send.MsgPushDTO;
import com.aliyun.messagemgt.common.dto.response.ResultMap;
import com.aliyun.messagemgt.common.dto.send.MsgRecordVO;
import com.aliyun.messagemgt.dto.out.MsgPushResponseDTO;

import java.util.List;

/**
 * Created with IDEA
 *
 * @author:zhangxingxing 0027012120
 * @date:2019/1/22
 * @time:19:34
 */
public interface PushService {

//    /**
//     * 简单人工推送
//     *
//     * @param msgRecordVO
//     * @return
//     */
//    @Deprecated
//    void simplePush(MsgRecordVO msgRecordVO);
//
//    /**
//     * 通过api调用的推送服务
//     *
//     * @param msgPushVO
//     * @return
//     */
//    @Deprecated
//    void apiPush(MsgPushVO msgPushVO);

    /**
     * 通过api调用的推送服务
     * @param msgPushDTO
     */
    MultiResponse<SingleResponse<MsgPushResponseDTO>> apiPush(MsgPushDTO msgPushDTO);

    /**
     * 消息重发接口(用于消息发送失败的情况)
     * @param msgId
     * @return
     */
    ResultMap<MsgPushResponseDTO> apiRePush(Long msgId);
    /**
     * 监听mq消息的推送服务
     *
     * @param msgBody
     * @return
     */
    void mqPush(String msgBody);

//    /**
//     * 监控消息源推送
//     * @param bodyStr
//     */
//    void monitorPush(String bodyStr);

    /**
     * 构建响应体
     * @param msgRecordVOS
     * @return
     */
    MultiResponse<SingleResponse<MsgPushResponseDTO>> buildResponse(List<MsgRecordVO> msgRecordVOS);

    /**
     * 处理SingleResponse
     * @param msgRecordVO
     * @return
     */
    SingleResponse<MsgPushResponseDTO> processSingleResponse(MsgRecordVO msgRecordVO);
}
